//
//  HLOauthViewController.swift
//  HL-sinaWeiBo
//
//  Created by 任翰林 on 16/5/12.
//  Copyright © 2016年 任翰林. All rights reserved.
//

import UIKit
import AFNetworking
import SVProgressHUD

//  新浪微博的appkey
let WeiboAppKey = "2794720978"
//  授权回调页
let WeiboRedirect_Uri = "http://www.itcast.cn"
//App Secret：114302f77cc62c3ea38217c80982feaf
let appSecret = "114302f77cc62c3ea38217c80982feaf"

class HLOauthViewController: UIViewController {

    //  MARK: - 懒加载控件 -
    private lazy var webView:UIWebView = UIWebView()
    
    override func loadView() {
        
        webView.delegate = self
        
        view = webView
    }
    
    
    override func viewDidLoad() {
        super.viewDidLoad()
     
        //  请求登陆地址
        let url = "https://api.weibo.com/oauth2/authorize?client_id=\(WeiboAppKey)&redirect_uri=\(WeiboRedirect_Uri)"
        let request = NSURLRequest(URL: NSURL(string: url)!)
        
        print(url)
        //  加载登陆页面
        webView.loadRequest(request)
        
        
//        添加Nav按钮
        setUpNavUI()
        
    }

    func setUpNavUI() {
        
    navigationItem.leftBarButtonItem = UIBarButtonItem(title: "取消", fountSize: 15, target: self, action: "cancerItemClick")
    navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", fountSize: 15, target: self, action: "autiFillItemClick")
    navigationItem.title = "微博登录"
        
    }
    
    //  MARK: - 取消按钮和自动填充按钮的点击事件 -

    func cancerItemClick() {
        print("我是取消按钮，我被点击了")
    dismissViewControllerAnimated(true, completion: nil)
    
    }
    
    func autiFillItemClick() {
        
        print("我是自动填充按钮，我被点击了")
        
         webView.stringByEvaluatingJavaScriptFromString("document.getElementById('userId').value = 'sanazhenghailong@163.com'; document.getElementById('passwd').value = 'long333494!'")
        
    }
   
    
    
////     获取accessToken
//    private func requestUserAcountToken(code: String) {
//        
//        HLNetWorkTools.shareTools.requestAccessToken(code, callBack: { (response, error) -> () in
//            
//            if error != nil {
//                print("网络请求异常")
//                print(error)
//                return
//            }
//            
//            
//            guard let dict = response as? [String: AnyObject] else {
//                print("这不是一个正确的json格式")
//                return
//            }
//            //             代码到这里一定是一个字典
//            let userAcount = HLUserAcount(dic: dict)
//            
//            //             这里，我们拿到的userAcount 就是我们得到的模型
//            self.requestUserInfo(userAcount)
//            
//            
//        })
//    }
//    

    
    
    
    
////  MARK: - requestUserInfo -
////    通过toke获取用户信息
//    private func requestUserInfo(userAcount: HLUserAcount) {
//        
//        HLNetWorkTools.shareTools.requestUserInfo(userAcount) { (response, error) -> () in
//            
//            if error != nil {
//            print("网络请求异常")
//            return
//            }
//            
//            guard let dic = response as? [String: AnyObject] else {
//                print("不是一个正确的json数据")
//                return
//            }
//            
//            //  代码执行到此是一个正确的字典格式
//            userAcount.name = dic["name"] as? String
//            userAcount.avatar_large = dic["avatar_large"] as? String
//            
//            userAcount.saveUserAccount()
//            
//            
//        }
// 
//    }
//    
    
    
    
}


//  MARK: - UIWebViewDelegate代理方法 -

extension HLOauthViewController: UIWebViewDelegate {
    
//    开始请求前调用的代理方法
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {

//        print("开始请求前调用的代理方法")
//        print(request.URL?.absoluteString)
        guard let  url = request.URL else {
            
//        这是首先把地址为空的情况排除在外了。
            return false
        }
        
//        取非得意思是不是我们关心的那个url
        if !url.absoluteString.hasPrefix(WeiboRedirect_Uri) {
        
            return true
            
          }
        
//        代码执行到现在，就已经找到了我们关心的那个url
        print(url.query)
        
        
        if let query = url.query where query.hasPrefix("code=") {
            
            let code = query.substringFromIndex("code=".endIndex)
//            print("===这就是我们想要的code====",code)
//        在这里拿到code之后，进行网络请求
//            requestAccessToken(code)
            
//            获取accessToken
//            requestUserAcountToken(code)
            
//              从vidwmodel中获取方法，
            HLUserAcountViewModel.shareUserAcountViewModel.requestUserAcountToken(code, complete: { (isSuccess) -> () in
                
                if isSuccess {
                print("登陆成功")
                } else {
                SVProgressHUD.showErrorWithStatus("登录失败")
                
                }
                
            })
            
            
            
        }else{
            
//        点击取消按钮，返回到访客视图界面
        dismissViewControllerAnimated(true, completion: nil)
        
        }
        
        
        return true
    }

    
    
    
    //  开始加载请求
    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.show()
    }
    //  加载请求完成
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
    
    //  加载失败
    func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
        SVProgressHUD.dismiss()
    }



}




